//Alex Silkin

#pragma once

#ifndef KIT_ROBOT_TEST_H
#define KIT_ROBOT_TEST_H

#include <iostream>
#include "gmock/gmock.h"
#include "gtest/gtest.h"
#include "Agent.h"
#include "KitRobotAgent.h"

#include "PartRobotAgentMock.h"
#include "ConveyorAgentMock.h"
#include "Table.h"
#include "InspectorAgentMock.h"

#include "GUIKitRobotMock.h"
#include "Kit.h"

#include "Thread.h"

class Kit;

class KitRobotTest : public ::testing::Test {
public:
	KitRobotTest();

	KitRobotAgent kitRobot;

	GUIKitRobotMock gui;

	Table* table;

	PartRobotAgentMock partsRobot;
	ConveyorAgentMock onConveyor;
	ConveyorAgentMock offGoodConveyor;
	ConveyorAgentMock offBadConveyor;
	InspectorAgentMock inspector;


	bool runScheduler();
	bool isAllReferencesInitialized();

	virtual void SetUp();

	void sleep(unsigned int mseconds);

	Kit* makeNewKit();

};

#endif